package com.ruoyi.verify.service;

import com.ruoyi.verify.domain.VerifyMemberInfo;
import com.ruoyi.verify.domain.VerifyPlanInfo;
import com.ruoyi.verify.transform.FactoryInfo;
import com.ruoyi.verify.transform.VerifyPlanInfos;

import java.util.List;

public interface IVerifyMemberInfoService
{
    /**
     * 查询【请填写功能名称】
     *
     * @param memberid 【请填写功能名称】ID
     * @return 【请填写功能名称】
     */
    public VerifyMemberInfo selectVerifyMemberInfoById(Long memberid);

    /**
     * 查询【请填写功能名称】列表
     *
     * @param verifyMemberInfo 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<VerifyMemberInfo> selectVerifyMemberInfoList(VerifyMemberInfo verifyMemberInfo);

    /**
     * 查询审核组人员
     */
    public List<VerifyMemberInfo> selectVerifyMemberTeamList(VerifyMemberInfo verifyMemberInfo);

    /**
     * 查询专家组列表
     *
     * @param verifyMemberInfo 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<VerifyMemberInfo> selectVerifyTeamMemberInfoList(VerifyMemberInfo verifyMemberInfo);

    /**
     * 新增【请填写功能名称】
     *
     * @param verifyMemberInfo 【请填写功能名称】
     * @return 结果
     */
    public int insertVerifyMemberInfo(VerifyMemberInfo verifyMemberInfo);

    /**
     * 新增专家组成员
     */
    public int insertVerifyTeamMember(VerifyMemberInfo verifyMemberInfo);


    /**
     * 修改【请填写功能名称】
     *
     * @param verifyMemberInfo 【请填写功能名称】
     * @return 结果
     */
    public int updateVerifyMemberInfo(VerifyMemberInfo verifyMemberInfo);

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteVerifyMemberInfoByIds(VerifyMemberInfo verifyMemberInfo);

    /**
     * 删除【请填写功能名称】信息
     *
     * @param memberid 【请填写功能名称】ID
     * @return 结果
     */
    public int deleteVerifyMemberInfoById(Long memberid);

//    /**
//     * 新增审核专家组
//     *
//     * @param verifyMemberFactoryType 【请填写功能名称】
//     * @return 结果
//     */
//    public int insertVerifyFactoryType(String verifytype,String factorycode,Long memberid);

    /**
     * 编辑某个专家组
     */
    public List<VerifyMemberInfo> selectVerifyMemberInfoByVerifytypeFactorycode(String verifytype, String factorycode);

    public int deleteVerifyTeamMemberInfoByVerifytypeFactorycode(String verifytype, String factorycode,String year);

//    /**
//     * 根据计划ID获取成员信息
//     */
//    public List<VerifyMemberInfo> selectVerifyMemberInfoByPlanid(Long planid);

    /**
     * 根据计划ID获取成员信息
     */
    public List<VerifyPlanInfos.innerVerify> selectVerifyMemberInfoByPlanid(VerifyPlanInfo vpi);

    /**
     * 通过基地代码、审核类型、年份查询某个专家组
     */
    public List<VerifyMemberInfo> selectVerifyMemberInfoByVerifytypeFactorycodeAndYear(String verifytype, String factorycode,String year);

    /**
     * 修改专家组状态
     */
    public int updateVerifyTeamStatus(VerifyMemberInfo verifyMemberInfo);

    /**
     * 判断新增专家组是否和已有专家组时间冲突
     * 返回true表示时间冲突
     */
    public boolean ifTimeConflict(String verifytype,String factorycode,String starttime,String endtime);


    /**
     * 导入专家库成员
     */
    public int importVerifyTeamMemberInfo(VerifyMemberInfo verifyMemberInfo);

    /**
     * 删除专家库成员
     */
    public int deleteVerifyTeamMemberInfo(String jobnumber);

    /**
     * 判断当前用户是否存在于SRM内
     * true表示存在
     */
    public boolean ifHaveMemberInSrm(String jobnumber);

    /**
     * 复制专家组
     */
    public int copyVerifyTeam(VerifyMemberInfo verifyMemberInfo);

    /**
     * 通过工号获取专家库成员
     */
    public VerifyMemberInfo selectVerifyExpertLibraryMember(String jobnumber);


    /**
     * 判断版本号是否重复（版本号不允许重复）
     * 需要数据库设置year字段为唯一索引，以防修改出错
     */
    public boolean ifHaveYearInSrm(String verifytype,String factorycode,String year);

    /**
     * 根据公司名获取成员信息
     */
    public List<VerifyMemberInfo> selectVerifyMemberInfoByFactorycode(VerifyMemberInfo verifyMemberInfo);

    /**
     * 根据人员数组ID查询人员信息
     */
    public List<VerifyMemberInfo> selectVerifyMemberInfoByMemberids(FactoryInfo factoryInfo);

    /**
     * 绑定审核人员角色
     */
    public void updateVerifyMemberRole(String jobnumber,String roleid);

    /**
     * 获取所有专家库成员id
     */
    public List<String> selectAllVerifyMemberid(VerifyMemberInfo verifyMemberInfo);

}
